Glisp Help: はじめてのスケッチ
一番簡単なスケッチの例です。
code:clj
(circle 50 50 40)
Open in Editor
関数 circle は、丸のパスを生成する関数です。100 100 は丸の中心、40は半径となります。Glisp のキャンバスは右上が原点です。
しかし、まだ塗りや線が設定されていないので、点線で表示されています。これをトマト色に塗りつぶしてみます。
code:clj
(style (fill "tomato")
(circle 50 50 40))
Open in Editor
style はスタイルを適用する関数です。 1 つめの引数 (fill "red")というスタイルを 2 つめ以降の引数、この場合は (circle [50 50] 40) というパスに適用しています。ちなみにfillもまた、塗りのスタイル情報を返す関数です。
ついでに線色もつけたい場合は、 style を入れ子にします。
code:clj
(style (fill "RoyalBlue")
(style (stroke "tomato" 10)
(circle 50 50 40)))
Open in Editor
スタイルは外側から順に描画されます。この例では、丸がまずトマト色で塗られてから太さ 10 の青い線で縁取られます。この表記は、style関数の第 2 引数をベクタにすることで、このように縮めて書くこともできます。
code:clojure
(style (fill "tomato") (stroke "RoyalBlue" 10)
(circle 50 50 40))
Open in Editor
複数のパスにまとめてスタイルを適用することもできます。
code:clj
(style (stroke "turquoise" 6)
(circle 50 50 40)
(rect 20 40 60 20))
Open in Editor
rect は右上の位置と幅・高さから四角形のパスを返す関数です。
トランスフォーム
transform関数を使って、グループ全体の位置や角度といったトランスフォーム値を設定することができます。
code:clj
(transform (translate 30 30)
(style (fill "gold")
(rect 0 0 60 40)))
Open in Editor
translate関数は、平行移動のトランスフォーム値(実体は行列)を返します。こうしたトランスフォーム値を返す関数は他にscaleやrotateなどがありますが、これらはmat2d/*関数で組み合わせることが出来ます。
code:clj
(transform (mat2d/* (translate 20 10)
(rotate (deg 20))
(scale 1.5 1))
(style (fill "gold")
(rect 0 0 50 40)))
Open in Editor
rotate はラジアン角を引数に取るので、deg関数で「度」からラジアンへの変換をしています。
細かい話はGlisp Help:トランスフォームを参照してください。